package com.serverTechnology.resource.service;

import com.serverTechnology.resource.entity.ManagementEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import com.serverTechnology.resource.entity.dto.InsertManagementDto;
import com.serverTechnology.resource.entity.dto.ManagementInsertDto;
import com.serverTechnology.resource.entity.dto.ManagementPageDto;
import com.serverTechnology.resource.entity.dto.ManagementUpdateVo;
import com.serverTechnology.resource.entity.vo.InsertFidAndNameVo;
import com.serverTechnology.resource.entity.vo.ManagePageVo;
import com.serverTechnology.resource.entity.vo.ManagementInfoVo;
import com.serverTechnology.resource.entity.vo.MangeParamVo;

import java.util.List;

/**
 * 设备、工具、工装管理 服务类
 *
 * @author 王烁
 * @since 2024-07-28
 */
public interface IManagementService extends IService<ManagementEntity> {

    /**
     * 新增
     * @param managementInsertDto 请求参数
     */
    void add(ManagementInsertDto managementInsertDto);

    /**
     * 获取列表（带分页）
     * @param resource 请求参数
     * @return PageResult<?>   返回结果
     */
    PageResult<ManagePageVo> getManagementPage(ManagementPageDto resource);

    /**
     *  查询设备类型
     * @param deviceDistinguish 设备EQUIPMENT，工具TOOL，工装FROCK
     * @return
     */
    List<InsertFidAndNameVo> classifyType(String deviceDistinguish);


    /***
     * 根据id进行查询详情
     * @param id
     * @return
     */
    ManagementInfoVo getManagementById(Long id);

    /***
     * 根据id进行编辑
     * @param managementEntity 管理id
     * @return 删除结果
     */
    void updateManagement(ManagementUpdateVo managementEntity);

    /**
     * 根据id删除
     *
     * @param id 管理id
     * @return
     */
    void deleteManagement(Long id);

    /**
     *  设备配置详情
     * @param deviceId 类型id
     * @param resourceId 设备id
     * @return
     */
    List<MangeParamVo> getManagementDetail(List<Long> deviceId, List<Long> resourceId);

    /**
     *  新增设备配置OPC标签
     * @param insertManagementDto
     * @return
     */
    void insert(List<InsertManagementDto> insertManagementDto);
    /***
     * 工艺接口
     * 根据设备、工装、工具进行批量查询
     * @param ids
     * @return
     */
    List<ManagementEntity> craftByIds(List<Long> ids);
}
